Access 的参数查询(Parameter Query) (二)

您所在的位置:网站首页 what is your name对话 Access 的参数查询(Parameter Query) (二)

Access 的参数查询(Parameter Query) (二)

2023-05-21 01:11| 来源: 网络整理| 查看: 265

这篇文章集中讲一下参数查询的使用技巧。

1. 在多个字段使用参数

我们可以在不止一个字段使用参数来生成参数查询。比如我们有一张订单表,Orders,里面有CustomerID 和 EmployeeID 字段,我们想根据这两个字段做准则来查找某个员工跟某个客户签订的订单。我们就在“设计视图”的CustomerID 字段的Criteria 行输入[Enter Customer ID],在EmployeeID 段的Criteria 行输入[Enter EmployeeID]。运行这个查询时,Access 会先跳出一个对话框,提示信息是“Enter CustomerID”,等我们输入CustomerID 后,再跳出一个对话框,提示信息是“Enter EmployeeID”。切换到“SQL 视图”下,可以看到SQL 语句是这样写的:

SELECT Orders.*FROM OrdersWHERE (CustomerID=[Enter CustomerID]) AND (EmployeeID=[Enter EmployeeID]);

对话框跳出的先后顺序是按参数变量声明的先后顺序出现的。这里参数变量我们是隐性声明的,所以按从左到右,变量出现的先后顺序跳出对话框。我们把上例改成——

Parameters [Enter EmployeeID] number, [Enter CustomerID] number;SELECT Orders.*FROM OrdersWHERE (CustomerID=[Enter CustomerID]) AND (EmployeeID=[Enter EmployeeID]);

先跳出的就是“Enter EmployeeID”对话框,然后是“Enter CustomerID”对话框。

如果你对SQL 语句不熟悉,Access 还提供了个工具让你控制参数输入对话框出现的先后顺序。在“设计视图”下打开查询,点击Query 菜单—>Parameters,打开“Query Parameters”对话框。在这里输入参数的变量名并为它选择一个数据类型,这里做的操作和SQL 里的Parameters 声明是等价的。参数从上到下出现的顺序就是对话框出现的先后顺序。

注意:“Query Parameters”对话框里输入的变量名要和“设计视图”里输入的一致,比如“设计视图”里是[Enter EmployeeID],这里也要是[Enter EmployeeID]。如果不一样的话,意味着声明了另外一个变量,只是在查询语句里没用到,并且这个多余的参数也会跳出个对话框。

2. 在一个字段使用多个参数

这种情况最常见的例子就是以时间为准则,查找开始和结束时间段内的所有记录。比如Orders 表有一个[Order Date]字段,我们想查找某个时间段内签订的合同,我们在“设计视图”的[Order Date] 字段的Criteria 行输入 Between [Enter Start Date] And [Enter End Date]。

对于Date/Time类型字段的查询,我们一般指定准则时要注意用# 把日期值括起来,比如 #2008-3-5#。但在参数查询的对话框里,我们输入日期时就不用加# 了,只需要输入 2008-3-5。

3. 在删除查询(Delete Query)中使用参数

我们上面讲的例子都是参数在选择查询(Select Query)中的应用,Access 的参数查询还可以用在其它的查询中。

比如当员工离职时,我们要从Employee 表把相应的员工记录删除,我们也可以用参数查询来使删除工作模板化。我们在“SQL 视图”中输入如下SQL 语句——

Delete * from Employee where Employee_name = [Enter Employee Name]

每次运行这条删除查询时就只删除符合输入值的员工记录。

4. 在更新查询(Update Query)中使用参数

同理,我们在更新查询中也可以使用参数。比如,一个员工从一个城市调到另一个城市的时候,我们要把符合查询条件的员工的城市字段更新。参数在这个例子里有更大的用处,不仅仅是作为筛选的准则,还可以用于动态的赋予新的城市名。

我们在“SQL 视图”中输入如下SQL 语句——

PARAMETERS [Enter Employee Name] Text ( 255 ), [New City Name] Text ( 255 );UPDATE Employee SET Employee.city = [New City Name]WHERE Employee.Employee_name= [Enter Employee Name] ;

加上PARAMETERS 声明,是为了让 [Enter Employee Name] 对话框先出现,这样比较符合操作思路,先找出要更新的人,再把城市设为新的值。如果不显式声明,Update 语句的Set 子句出现在Where 子句前,虽然不影响运行结果,参数只是值替代,但用起来不符合习惯。

在这个例子中,我们把参数的功能扩大了,不只用为查询准则。

5. 在模糊查询中使用参数

有的时候,我们想用 Like 操作符进行一些模糊查询,用到通配符 * 和 ?。我们可以把这个任务留给使用查询的用户,也可以自己承担这个工作。比如下面这种写法,

Select * from Employee where Employee_name like [Enter Employee Name]

如果用户在对话框中输入“李*”,就可以把所有姓李的人列出来。让用户自己控制条件,得出的记录集的范围比较精确。如果你不想让用户关心通配符什么的,你可以把通配符放到查询的设计里——

Select * from Employee where Employee_name like "*"+[Enter Employee Name]+"*"

用户使用时只要输入“李”就可以了,但是会把不姓李,但名字里带李的人列出来。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3